<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>DRV_I2C_WriteReadTransfer Function</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="generator" content="Doc-O-Matic" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="STYLESHEET" href="default.css" type="text/css" />

<script type="text/javascript" src="scripts.js"></script>
</head>
<body class="Element700" onload="onBodyLoadEx('frames.html', 'topic', '00280.html');" onmousedown="onBodyMouseDown();">

<!-- Begin Popups -->

<!-- End Popups -->

<!-- Begin Page Header -->
<div class="Element710" id="areafixed">
<div class="Element94">
<a href="00007.html" target="topic">Driver Libraries Help</a> &gt; <a href="00058.html" target="topic">I2C Driver Library Help</a> &gt; <a href="00059.html" target="topic">Library Interface</a> &gt; c) Data Transfer Functions &gt; <a href="00280.html" target="topic">DRV_I2C_WriteReadTransfer Function</a></div>
<div class="Element92">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="25%">
<div class="Element1">
MPLAB Harmony Core Help</div>
</td><td width="25%">
<div class="Element2">
<a href="contents.html" target="tocidx">Contents</a> | <a href="00007.html" target="topic">Home</a></div>
</td><td width="25%">
<div class="Element90">
<a href="00283.html" target="topic">Previous</a> | <a href="00059.html" target="topic">Up</a> | <a href="00281.html" target="topic">Next</a></div>
</td><td width="25%">
<div class="Element96">
<a href="mailto:docerrors@microchip.com&subject=MPLAB Harmony Documentation Feedback (Topic ID: DRV_I2C_WriteReadTransfer@DRV_HANDLE@uint16_t@void* const@size_t@void* const@size_t Topic Title: DRV_I2C_WriteReadTransfer Function)&body=Thank you for your feedback! Please include a description of your feedback, and indicate whether you are reporting an an error in the documentation or an enhancement.">Documentation Feedback</a><br> <a href="http://support.microchip.com" target="_blank">Microchip Support</a></div>
</td></tr></table><div class="Element5">
DRV_I2C_WriteReadTransfer Function</div>
</div>
</div>

<!-- End Page Header -->

<!-- Begin Client Area -->
<div class="Element720" id="areascroll">
<div class="Element721">

<!-- Begin Page Content -->
<a name="PageContent"></a><div class="Element58">
<a name="4465736372697074696F6E"></a><div class="Element11">
<div class="Element10">
<p class="Element10">
This function does a blocking write and read operation. The function blocks till the write and read is complete or error has occurred during data transfer. Function will return false to report failure. The failure will occur for the following reasons:</p>
<ul class="Element630">
<li class="Element600">Invalid input parameters</li>
<li class="Element600">Hardware error</li>
</ul></div>
</div>
<a name="43"></a><div class="Element99">
C</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><strong><span style="color: #000080">bool</span></strong> <strong><span style="color: #000000">DRV_I2C_WriteReadTransfer</span></strong>(
    <strong><span style="color: #000080">const</span></strong> <a href="00257.html" target="topic">DRV_HANDLE</a> <strong><span style="color: #000000">handle</span></strong>, 
    uint16_t <strong><span style="color: #000000">address</span></strong>, 
    <strong><span style="color: #000080">void</span></strong>* <strong><span style="color: #000080">const</span></strong> <strong><span style="color: #000000">writeBuffer</span></strong>, 
    <strong><span style="color: #000080">const</span></strong> size_t <strong><span style="color: #000000">writeSize</span></strong>, 
    <strong><span style="color: #000080">void</span></strong>* <strong><span style="color: #000080">const</span></strong> <strong><span style="color: #000000">readBuffer</span></strong>, 
    <strong><span style="color: #000080">const</span></strong> size_t <strong><span style="color: #000000">readSize</span></strong>
);</pre></div></div>
<a name="507265636F6E646974696F6E73"></a><div class="Element14">
Preconditions</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="00264.html" target="topic">DRV_I2C_Open</a> must have been called to obtain a valid opened device handle.</p></div>
</div>
<a name="506172616D6574657273"></a><div class="Element14">
Parameters</div>
<div class="Element11">
<div class="Element10">
<div class="Element312">
<div class="TableDiv">
<table cellspacing="0" class="Table3">
<tr>
<td class="Element300" valign="top" width="35%">
<div class="Element301">
Parameters&nbsp;</div></td><td class="Element304" valign="top" width="65%">
<div class="Element305">
Description&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
handle&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
A valid open-instance handle, returned from the driver's open routine <a href="00264.html" target="topic">DRV_I2C_Open</a> function.<br>&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
address&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Slave Address<br>&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
writeBuffer&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Source buffer containing data to be written.<br>&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
writeSize&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Size in bytes of data to be written.<br>&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
readBuffer&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Destination buffer where read data is stored.<br>&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
readSize&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Size in bytes of data to be read.&nbsp;</div></td></tr></table></div></div>
</div>
</div>
<a name="52657475726E73"></a><div class="Element14">
Returns</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
true - transfer is successful false - error has occurred</p></div>
</div>
<a name="52656D61726B73"></a><div class="Element14">
Remarks</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
This function is thread safe in a RTOS application. This function should not be called from an interrupt context. This function is available only in the synchronous mode.</p></div>
</div>
<a name="4578616D706C65"></a><div class="Element14">
Example</div>
<div class="Element11">
<div class="Element10">
<div class="Element13"><div class="Element12"><pre class="Element12">uint8_t myTxBuffer[MY_TX_BUFFER_SIZE];
uint8_t myRxBuffer[MY_RX_BUFFER_SIZE];

<i><span style="color: #008000">// myI2CHandle is the handle returned</span></i>
<i><span style="color: #008000">// by the DRV_I2C_Open function.</span></i>

<i><span style="color: #008000">// slaveAddress is address of I2C slave device</span></i>
<i><span style="color: #008000">// to which data is to be written</span></i>

<strong><span style="color: #000080">if</span></strong> (DRV_I2C_WriteReadTransfer(myI2CHandle, slaveAddress, myTxBuffer, MY_TX_BUFFER_SIZE, myRxBuffer, MY_RX_BUFFER_SIZE) == <strong><span style="color: #000080">false</span></strong>)
{
    <i><span style="color: #008000">// Error handling here</span></i>
}
</pre></div></div>
</div>
</div>
</div>
<!-- End Page Content -->

<!-- Begin Page Footer -->
<div class="Element95">
<a href="00007.html" target="topic">Driver Libraries Help</a> &gt; <a href="00058.html" target="topic">I2C Driver Library Help</a> &gt; <a href="00059.html" target="topic">Library Interface</a> &gt; c) Data Transfer Functions &gt; <a href="00280.html" target="topic">DRV_I2C_WriteReadTransfer Function</a></div>
<div class="Element93">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="25%">
<div class="Element3">
MPLAB Harmony Core Help</div>
</td><td width="25%">
<div class="Element4">
<a href="contents.html" target="tocidx">Contents</a> | <a href="00007.html" target="topic">Home</a></div>
</td><td width="25%">
<div class="Element91">
<a href="00283.html" target="topic">Previous</a> | <a href="00059.html" target="topic">Up</a> | <a href="00281.html" target="topic">Next</a></div>
</td><td width="25%">
<div class="Element97">
<a href="mailto:docerrors@microchip.com&subject=MPLAB Harmony Documentation Feedback (Topic ID: DRV_I2C_WriteReadTransfer@DRV_HANDLE@uint16_t@void* const@size_t@void* const@size_t Topic Title: DRV_I2C_WriteReadTransfer Function)&body=Thank you for your feedback! Please include a description of your feedback, and indicate whether you are reporting an an error in the documentation or an enhancement.">Documentation Feedback</a><br> <a href="http://support.microchip.com" target="_blank">Microchip Support</a></div>
</td></tr></table></div>

<!-- End Page Footer -->
</div>
</div>

<!-- End Client Area -->
</body></html>